<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="robots" content="noodp" />
    <title class="pjax-title">Vite Plugin生命周期 - 我的笔记</title><meta name="Description" content="记录常用的笔记"><meta property="og:title" content="Vite Plugin生命周期" />
<meta property="og:description" content="Vite Plugin 插件钩子通用钩子开发时，Vite dev server 创建一个插件容器按照Rollup调用创建钩子的规则请求各个钩子函数。 下面钩子会在服务器启动时调用一次" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://g0ngjie.gitee.io/vite-plugin%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/" /><meta property="og:image" content="https://g0ngjie.gitee.io/images/avatar.jpg"/><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-06-17T10:47:36+08:00" />
<meta property="article:modified_time" content="2022-06-17T10:47:36+08:00" /><meta property="og:site_name" content="我的笔记" />

<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:image" content="https://g0ngjie.gitee.io/images/avatar.jpg"/>

<meta name="twitter:title" content="Vite Plugin生命周期"/>
<meta name="twitter:description" content="Vite Plugin 插件钩子通用钩子开发时，Vite dev server 创建一个插件容器按照Rollup调用创建钩子的规则请求各个钩子函数。 下面钩子会在服务器启动时调用一次"/>
<meta name="application-name" content="我的笔记">
<meta name="apple-mobile-web-app-title" content="我的笔记">

<meta name="theme-color" content="#f8f8f8"><meta name="msapplication-TileColor" content="#da532c"><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><link rel="manifest" href="/site.webmanifest"><link rel="canonical" href="https://g0ngjie.gitee.io/vite-plugin%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/" /><link rel="prev" href="https://g0ngjie.gitee.io/%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AAexe%E6%96%87%E4%BB%B6%E4%B8%BA%E5%90%AF%E5%8A%A8%E9%A1%B9/" /><link rel="stylesheet" href="/lib/normalize/normalize.min.css"><link rel="stylesheet" href="/css/style.min.css"><link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" href="/lib/fontawesome-free/all.min.css">
        <noscript><link rel="stylesheet" href="/lib/fontawesome-free/all.min.css"></noscript><link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" href="/lib/animate/animate.min.css">
        <noscript><link rel="stylesheet" href="/lib/animate/animate.min.css"></noscript>
    
    
    
    <meta name="google-site-verification" content="MQ8DNu27ayX6B_4ObiEDK09vGr1fdy7kOAnbd09hJk4" /><script type="application/ld+json">
    {
        "@context": "http://schema.org",
        "@type": "BlogPosting",
        "headline": "Vite Plugin生命周期",
        "inLanguage": "zh-CN",
        "mainEntityOfPage": {
            "@type": "WebPage",
            "@id": "https:\/\/g0ngjie.gitee.io\/vite-plugin%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F\/"
        },"image": ["https:\/\/g0ngjie.gitee.io\/images\/Apple-Devices-Preview.png"],"genre": "posts","keywords": "vue","wordcount":  649 ,
        "url": "https:\/\/g0ngjie.gitee.io\/vite-plugin%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F\/","datePublished": "2022-06-17T10:47:36+08:00","dateModified": "2022-06-17T10:47:36+08:00","license": "This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.","publisher": {
            "@type": "Organization",
            "name": "xxxx","logo": "https:\/\/g0ngjie.gitee.io\/images\/avatar.jpg"},"author": {
                "@type": "Person",
                "name": "Gj"
            },"description": ""
    }
    </script></head>

<body header-desktop="fixed" header-mobile="auto"><script type="text/javascript">
        function setTheme(theme) {document.body.setAttribute('theme', theme);}
        function saveTheme(theme) {window.localStorage && localStorage.setItem('theme', theme);}
        function getMeta(metaName) {const metas = document.getElementsByTagName('meta'); for (let i = 0; i < metas.length; i++) if (metas[i].getAttribute('name') === metaName) return metas[i]; return '';}
        if (window.localStorage && localStorage.getItem('theme')) {let theme = localStorage.getItem('theme');theme === 'light' || theme === 'dark' || theme === 'black' ? setTheme(theme) : (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? setTheme('dark') : setTheme('light')); } else { if ('dark' === 'light' || 'dark' === 'dark' || 'dark' === 'black') setTheme('dark'), saveTheme('dark'); else saveTheme('auto'), window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? setTheme('dark') : setTheme('light');}
        let metaColors = {'light': '#f8f8f8','dark': '#252627','black': '#000000'}
        getMeta('theme-color').content = metaColors[document.body.getAttribute('theme')];
    </script>
    <div id="back-to-top"></div>
    <div id="mask"></div><div class="wrapper"><header class="desktop" id="header-desktop">
    <div class="header-wrapper">
        <div class="header-title">
            <a href="/" title="我的笔记">笔记</a>
        </div>
        <div class="menu">
            <div class="menu-inner"><a class="menu-item" href="/posts/"> 所有文章 </a><a class="menu-item" href="/tags/"> 标签 </a><a class="menu-item" href="/categories/"> 分类 </a><a class="menu-item" href="http://www.alrale.cn/" rel="noopener noreffer" target="_blank"> 作品 </a><a class="menu-item" href="https://github.com/g0ngjie" title="GitHub" rel="noopener noreffer" target="_blank"><i class='fab fa-github fa-fw'></i>  </a><span class="menu-item delimiter"></span><span class="menu-item search" id="search-desktop">
                        <input type="text" placeholder="搜索文章标题或内容..." id="search-input-desktop">
                        <a href="#" onclick="return false;" class="search-button search-toggle" id="search-toggle-desktop" title="搜索">
                            <i class="fas fa-search fa-fw"></i>
                        </a>
                        <a href="#" onclick="return false;" class="search-button search-clear" id="search-clear-desktop" title="清空">
                            <i class="fas fa-times-circle fa-fw"></i>
                        </a>
                        <span class="search-button search-loading" id="search-loading-desktop">
                            <i class="fas fa-spinner fa-fw fa-spin"></i>
                        </span>
                    </span><a href="#" onclick="return false;" class="menu-item theme-switch" title="切换主题">
                    <i class="fas fa-adjust fa-fw"></i>
                </a></div>
        </div>
    </div>
</header><header class="mobile" id="header-mobile">
    <div class="header-container">
        <div class="header-wrapper">
            <div class="header-title">
                <a href="/" title="我的笔记">笔记</a>
            </div>
            <div class="menu-toggle" id="menu-toggle-mobile">
                <span></span><span></span><span></span>
            </div>
        </div>
        <div class="menu" id="menu-mobile"><div class="search-wrapper">
                    <div class="search mobile" id="search-mobile">
                        <input type="text" placeholder="搜索文章标题或内容..." id="search-input-mobile">
                        <a href="#" onclick="return false;" class="search-button search-toggle" id="search-toggle-mobile" title="搜索">
                            <i class="fas fa-search fa-fw"></i>
                        </a>
                        <a href="#" onclick="return false;" class="search-button search-clear" id="search-clear-mobile" title="清空">
                            <i class="fas fa-times-circle fa-fw"></i>
                        </a>
                        <span class="search-button search-loading" id="search-loading-mobile">
                            <i class="fas fa-spinner fa-fw fa-spin"></i>
                        </span>
                    </div>
                    <a href="#" onclick="return false;" class="search-cancel" id="search-cancel-mobile">
                        取消
                    </a>
                </div><a class="menu-item" href="/posts/" title="">所有文章</a><a class="menu-item" href="/tags/" title="">标签</a><a class="menu-item" href="/categories/" title="">分类</a><a class="menu-item" href="http://www.alrale.cn/" title="" rel="noopener noreffer" target="_blank">作品</a><a class="menu-item" href="https://github.com/g0ngjie" title="GitHub" rel="noopener noreffer" target="_blank"><i class='fab fa-github fa-fw'></i></a><a href="#" onclick="return false;" class="menu-item theme-switch" title="切换主题">
                <i class="fas fa-adjust fa-fw"></i>
            </a></div>
    </div>
</header>
<div class="search-dropdown desktop">
    <div id="search-dropdown-desktop"></div>
</div>
<div class="search-dropdown mobile">
    <div id="search-dropdown-mobile"></div>
</div>
<main class="main">
            <div class="container"><div class="toc" id="toc-auto">
        <h2 class="toc-title">目录</h2>
        <div class="toc-content" id="toc-content-auto"><nav id="TableOfContents">
  <ul>
    <li><a href="#vite-plugin-插件钩子">Vite Plugin 插件钩子</a>
      <ul>
        <li><a href="#通用钩子">通用钩子</a></li>
        <li><a href="#vite-特有钩子">Vite 特有钩子</a></li>
        <li><a href="#范例钩子调用顺序测试">范例：钩子调用顺序测试</a></li>
        <li><a href="#钩子调用顺序">钩子调用顺序</a></li>
        <li><a href="#插件顺序">插件顺序</a></li>
      </ul>
    </li>
  </ul>
</nav></div>
    </div><script>document.getElementsByTagName("main")[0].setAttribute("pageStyle", "wide")</script><script>document.getElementsByTagName("main")[0].setAttribute("autoTOC", "true")</script><article class="page single"><h1 class="single-title animate__animated animate__flipInX">Vite Plugin生命周期</h1><div class="post-meta">
            <div class="post-meta-line">
                <span class="post-author"><i class="author fas fa-user-circle fa-fw"></i><a href="/" title="Author" rel=" author" class="author">Gj</a>
                </span>&nbsp;<span class="post-category">收录于 </span>&nbsp;<span class="post-category">类别 <a href="/categories/%E5%89%8D%E7%AB%AF/"><i class="far fa-folder fa-fw"></i>前端</a></span></div>
            <div class="post-meta-line"><i class="far fa-calendar-alt fa-fw"></i>&nbsp;<time datetime="2022-06-17">2022-06-17</time>&nbsp;<i class="far fa-edit fa-fw"></i>&nbsp;<time datetime="2022-06-17">2022-06-17</time>&nbsp;<i class="fas fa-pencil-alt fa-fw"></i>&nbsp;约 649 字&nbsp;
                <i class="far fa-clock fa-fw"></i>&nbsp;预计阅读 2 分钟&nbsp;</div>
        </div><div class="details toc" id="toc-static"  kept="">
                <div class="details-summary toc-title">
                    <span>目录</span>
                    <span><i class="details-icon fas fa-angle-right"></i></span>
                </div>
                <div class="details-content toc-content" id="toc-content-static"><nav id="TableOfContents">
  <ul>
    <li><a href="#vite-plugin-插件钩子">Vite Plugin 插件钩子</a>
      <ul>
        <li><a href="#通用钩子">通用钩子</a></li>
        <li><a href="#vite-特有钩子">Vite 特有钩子</a></li>
        <li><a href="#范例钩子调用顺序测试">范例：钩子调用顺序测试</a></li>
        <li><a href="#钩子调用顺序">钩子调用顺序</a></li>
        <li><a href="#插件顺序">插件顺序</a></li>
      </ul>
    </li>
  </ul>
</nav></div>
            </div><div class="content" id="content"><h2 id="vite-plugin-插件钩子" class="headerLink">
    <a href="#vite-plugin-%e6%8f%92%e4%bb%b6%e9%92%a9%e5%ad%90" class="header-mark"></a>Vite Plugin 插件钩子</h2><h3 id="通用钩子" class="headerLink">
    <a href="#%e9%80%9a%e7%94%a8%e9%92%a9%e5%ad%90" class="header-mark"></a>通用钩子</h3><p>开发时，<code>Vite dev server</code> 创建一个插件容器按照<code>Rollup</code>调用创建钩子的规则请求各个钩子函数。</p>
<p>下面钩子会在服务器启动时调用一次</p>
<ul>
<li><code>options</code> 替换或槽中 <code>rollup</code> 选项</li>
<li><code>buildStart</code> 开始创建</li>
</ul>
<p>下面钩子每次有模块请求时都会呗调用：</p>
<ul>
<li><code>resolveId</code>创建自定义确认函数，常用语定位第三方依赖</li>
<li><code>load</code>创建自定义加载函数，可用于返回自定义内容</li>
<li><code>transform</code>可用于转换已加载的模块内容</li>
</ul>
<p>下面钩子会在服务器关闭时调用一次</p>
<ul>
<li><code>buildEnd</code></li>
<li><code>closeBundle</code></li>
</ul>
<h3 id="vite-特有钩子" class="headerLink">
    <a href="#vite-%e7%89%b9%e6%9c%89%e9%92%a9%e5%ad%90" class="header-mark"></a>Vite 特有钩子</h3><ul>
<li><code>config</code>：修改 Vite 配置</li>
<li><code>configResolved</code>：Vite 配置确认</li>
<li><code>configureServer</code>：用于配置 dev server</li>
<li><code>transformIndexHtml</code>：用于转换宿主页</li>
<li><code>handleHotUpdate</code>：自定义 HMR 更新时间</li>
</ul>
<h3 id="范例钩子调用顺序测试" class="headerLink">
    <a href="#%e8%8c%83%e4%be%8b%e9%92%a9%e5%ad%90%e8%b0%83%e7%94%a8%e9%a1%ba%e5%ba%8f%e6%b5%8b%e8%af%95" class="header-mark"></a>范例：钩子调用顺序测试</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="kr">export</span> <span class="k">default</span> <span class="kd">function</span> <span class="nx">myExample</span><span class="p">()</span> <span class="p">{</span>
  <span class="c1">// 返回的时插件对象
</span><span class="c1"></span>  <span class="k">return</span> <span class="p">{</span>
    <span class="nx">name</span><span class="o">:</span> <span class="s2">&#34;my-example&#34;</span><span class="p">,</span>
    <span class="c1">// 初始化hooks，只走一次
</span><span class="c1"></span>    <span class="nx">options</span><span class="p">(</span><span class="nx">opts</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;options&#34;</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span>
    <span class="p">},</span>
    <span class="nx">buildStart</span><span class="p">()</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;buildStart&#34;</span><span class="p">);</span>
    <span class="p">},</span>
    <span class="c1">// vite特有钩子
</span><span class="c1"></span>    <span class="nx">config</span><span class="p">(</span><span class="nx">config</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;config&#34;</span><span class="p">,</span> <span class="nx">config</span><span class="p">);</span>
      <span class="c1">// 返回对象会合并在默认config中
</span><span class="c1"></span>      <span class="k">return</span> <span class="p">{};</span>
    <span class="p">},</span>
    <span class="nx">configResolved</span><span class="p">(</span><span class="nx">resolvedConfig</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;configResolved&#34;</span><span class="p">);</span>
    <span class="p">},</span>
    <span class="nx">configureServer</span><span class="p">(</span><span class="nx">server</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;configureServer&#34;</span><span class="p">);</span>
      <span class="c1">// server.app.use((req, res, next) =&gt; {
</span><span class="c1"></span>      <span class="c1">//     // custom middleware
</span><span class="c1"></span>      <span class="c1">//     // console.log(&#39;configureServer req&#39;, req)
</span><span class="c1"></span>      <span class="c1">//     // next()
</span><span class="c1"></span>      <span class="c1">// })
</span><span class="c1"></span>    <span class="p">},</span>
    <span class="nx">transformIndexHTML</span><span class="p">(</span><span class="nx">html</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;transformIndexHTML&#34;</span><span class="p">);</span>
      <span class="k">return</span> <span class="nx">html</span><span class="p">;</span>
      <span class="c1">// return html.replace(
</span><span class="c1"></span>      <span class="c1">//     /&lt;title&gt;.*?&lt;\/title&gt;/,
</span><span class="c1"></span>      <span class="c1">//     &#39;&lt;title&gt;Title replaced!&lt;/title&gt;&#39;
</span><span class="c1"></span>      <span class="c1">// )
</span><span class="c1"></span>    <span class="p">},</span>
    <span class="c1">// id确认
</span><span class="c1"></span>    <span class="nx">resolveId</span><span class="p">(</span><span class="nx">source</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;source&#34;</span><span class="p">);</span>
      <span class="k">if</span> <span class="p">(</span><span class="nx">source</span> <span class="o">===</span> <span class="s2">&#34;virtual-module&#34;</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="nx">source</span><span class="p">;</span> <span class="c1">// 返回source 表明命中，vite不在询问其他插件处理该id请求
</span><span class="c1"></span>      <span class="p">}</span>
      <span class="k">return</span> <span class="kc">null</span><span class="p">;</span> <span class="c1">// 返回null 表明是其他id要继续处理
</span><span class="c1"></span>    <span class="p">},</span>
    <span class="c1">// 加载模块代码
</span><span class="c1"></span>    <span class="nx">load</span><span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
      <span class="k">if</span> <span class="p">(</span><span class="nx">id</span> <span class="o">===</span> <span class="s2">&#34;virtual-module&#34;</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="s1">&#39;export default &#34;This is virtual!&#34;&#39;</span><span class="p">;</span>
      <span class="p">}</span>
      <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
    <span class="p">},</span>
    <span class="c1">// 转换
</span><span class="c1"></span>    <span class="nx">transform</span><span class="p">(</span><span class="nx">code</span><span class="p">,</span> <span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
      <span class="k">if</span> <span class="p">(</span><span class="nx">id</span> <span class="o">===</span> <span class="s2">&#34;virtual-module&#34;</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;transform&#34;</span><span class="p">,</span> <span class="nx">code</span><span class="p">);</span>
      <span class="p">}</span>
      <span class="k">return</span> <span class="nx">code</span><span class="p">;</span>
    <span class="p">},</span>
  <span class="p">};</span>
<span class="p">}</span>
</code></pre></div><h3 id="钩子调用顺序" class="headerLink">
    <a href="#%e9%92%a9%e5%ad%90%e8%b0%83%e7%94%a8%e9%a1%ba%e5%ba%8f" class="header-mark"></a>钩子调用顺序</h3><p><code>config</code> -&gt; <code>configResolved</code> -&gt; <code>options</code> -&gt; <code>configureServer</code> -&gt; <code>buildStart</code> -&gt; <code>Vite dev server ready</code> -&gt; <code>transformIndexHtml</code> -&gt; <code>resolvedId</code> -&gt; <code>load</code> -&gt; <code>transform</code></p>
<h3 id="插件顺序" class="headerLink">
    <a href="#%e6%8f%92%e4%bb%b6%e9%a1%ba%e5%ba%8f" class="header-mark"></a>插件顺序</h3><ul>
<li>别名处理 Alias</li>
<li>用户插件设置 <code>enforce: 'pre'</code></li>
<li>Vite 核心插件</li>
<li>用户插件未设置 <code>enforce</code></li>
<li>Vite 构建插件</li>
<li>用户插件设置 <code>enforce: 'post'</code></li>
<li>Vite 构建后置插件(minify, manifest, reporting)</li>
</ul>
</div>

        <div class="post-footer" id="post-footer">
    <div class="post-info">
        <div class="post-info-line">
            <div class="post-info-mod">
                <span>更新于 2022-06-17</span>
            </div>
            <div class="post-info-license"></div>
        </div>
        <div class="post-info-line">
            <div class="post-info-md"></div>
            <div class="post-info-share">
                <span></span>
            </div>
        </div>
    </div>

    <div class="post-info-more">
        <section class="post-tags"><i class="fas fa-tags fa-fw"></i>&nbsp;<a href="/tags/vue/">vue</a></section>
        <section>
            <span><a href="javascript:void(0);" onclick="window.history.back();">返回</a></span>&nbsp;|&nbsp;<span><a href="/">主页</a></span>
        </section>
    </div>

    <div class="post-nav"><a href="/%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AAexe%E6%96%87%E4%BB%B6%E4%B8%BA%E5%90%AF%E5%8A%A8%E9%A1%B9/" class="prev" rel="prev" title="设置某个exe文件为启动项"><i class="fas fa-angle-left fa-fw"></i>设置某个exe文件为启动项</a></div>
</div>
</article></div>
        </main><footer class="footer">
        <div class="footer-container"><div class="footer-line"></div>
            <div class="footer-line"></div>
            <div class="footer-line">
            </div>
        </div><script>
                    if('serviceWorker' in navigator) {
                        navigator.serviceWorker
                            .register('/sw.min.js', { scope: '/' })
                            .then(function(registration) {
                            });
                
                        navigator.serviceWorker
                            .ready
                            .then(function(registration) {
                            });
                    }
                </script></footer></div>

    <div id="fixed-buttons"><a href="#back-to-top" id="back-to-top-button" class="fixed-button" title="回到顶部">
            <i class="fas fa-arrow-up fa-fw"></i>
        </a><a href="#" id="view-comments" class="fixed-button" title="查看评论">
            <i class="fas fa-comment fa-fw"></i>
        </a>
    </div><div class="assets"><script type="text/javascript" src="/lib/autocomplete/autocomplete.min.js"></script><script type="text/javascript" src="/lib/lunr/lunr.min.js"></script><script type="text/javascript" src="/lib/lunr/lunr.stemmer.support.min.js"></script><script type="text/javascript" src="/lib/lunr/lunr.zh.min.js"></script><script type="text/javascript" src="/lib/lazysizes/lazysizes.min.js"></script><script type="text/javascript" src="/lib/tablesort/tablesort.min.js"></script><script type="text/javascript" src="/lib/topbar/topbar.min.js"></script><script type="text/javascript" src="/lib/pjax/pjax.min.js"></script><script type="text/javascript" src="/js/theme.min.js"></script></div>

<div class="pjax-assets"><script type="text/javascript">window.config={"code":{"copyTitle":"复制到剪贴板","maxShownLines":15},"comment":{},"search":{"highlightTag":"em","lunrIndexURL":"/index.json","lunrLanguageCode":"zh","lunrSegmentitURL":"/lib/lunr/lunr.segmentit.js","maxResultLength":10,"noResultsFound":"没有找到结果","snippetLength":50,"type":"lunr"},"table":{"sort":true}};</script><script type="text/javascript" src="/lib/clipboard/clipboard.min.js"></script></div>
</body>

</html>